<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style></style>
  </head>
  <body>
    <div>
      <h1>Reflect统一的对象操作API</h1>
      <p>
        1.Reflect属于一个静态类,不能通过new Reflect
        创建一个实例对象,只能调用静态类的静态方法,比如Reflect.get()
      </p>
      <p>2.Reflect内部提供了一系列对对象的底层操作</p>
      <p>3.Reflect成员方法就是proxy处理对象的默认实现</p>
      <p>4.存在的意义就是提供了一套api,一共存在13个方法</p>
    </div>
    <script>
      const obj = {
        foo: "123",
        bar: "456",
      };

      const proxy = new Proxy(obj, {
        get(target, property) {
          //默认生成调用Reflect对象对应的方法
          return Reflect.get(target, property);
        },
      });

      const obj2 = {
        name: "xjq",
        age: 18,
      };
      // 以前操作对象的方式
      // console.log("name" in obj2); //判断对象是否存在某个属性
      // console.log(delete obj["age"]); //删除某个属性
      // console.log(Object.keys(obj)); // 获取对象每一个key

      //现在Reflect
      console.log(Reflect.has(obj, "name")); //判断对象是否存在某个属性
      console.log(Reflect.defineProperty(obj, "age")); //删除某个属性
      console.log(Reflect.ownKeys(obj)); //获取对象每一个key
    </script>
  </body>
</html>
